A recent move in networking has been to cloud technologies that can allow some network functionality to be virtualized. Thus, some applications, services, networking functions, and the like can be virtualized as software appliances that can supplement and/or replace traditional hardware devices that may be tightly coupled to the software and/or functionality hosted by those devices. In some cases, large data centers can provide the hardware resources to host virtual machines that can execute software to provide functionality associated with certain applications or services, thereby obviating the traditional hardware/software coupling that has been relied upon for generations.
One advantage of cloud technologies over traditional networking technologies is the ability to deploy applications to resources without necessarily having to add and/or support new hardware infrastructure. On the other hand, identifying what resources of a large data center to deploy services to may be difficult as thousands or even several hundreds of thousands of deployment scenarios may be available to support a particular complex application that can consist of several hundreds of components. Thus, some cloud technologies may not deploy applications in an ideal manner.